/**
 * CourseLearningRecordService.java
 * com.sftz.modules.minapp.coursestudy.service
 * Copyright (c) 2018, 北京十方天资科技有限公司版权所有.
*/

package com.sftz.modules.minapp.coursestudy.service;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.nutz.dao.Cnd;
import org.nutz.dao.SqlManager;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;

import com.sftz.assets.entities.CourseEntity;
import com.sftz.assets.entities.CourseLearningRecordEntity;
import com.sftz.assets.entities.InsCourseStructureEntity;
import com.sftz.assets.entities.SUserEntity;
import com.sftz.assets.enums.StudyStateEnum;
import com.sftz.modules.minapp.coursestudy.form.WebCourseStudyRecordForm;
import com.uxuexi.core.common.util.Util;
import com.uxuexi.core.db.dao.IDbDao;

/**
 * 课程播放记录相关
 * @author   gyp
 * @Date	 2018年12月18日 	 
 */
@IocBean
public class CourseLearningRecordService {

	@Inject
	protected IDbDao dbDao;

	@Inject
	protected SqlManager sqlManager;

	/**
	 * 存储播放记录
	 * @Date 2018年12月18日
	 * @author gyp
	 * @param sqlParamForm
	 * @param userId
	 * @throws Exception(这里描述每个参数,如果有返回值描述返回值,如果有异常描述异常)
	 */
	public void insterRecourd(final WebCourseStudyRecordForm sqlParamForm) throws Exception {

		CourseLearningRecordEntity record = addRecourd(sqlParamForm);
		dbDao.insert(record);
	}

	/**
	 * 存储学习记录信息
	 * @Date 2018年12月18日
	 * @author gyp
	 * @param sqlParamForm
	 * @param userId
	 * @return
	 * @throws Exception(这里描述每个参数,如果有返回值描述返回值,如果有异常描述异常)
	 */
	private CourseLearningRecordEntity addRecourd(final WebCourseStudyRecordForm sqlParamForm) throws Exception {
		CourseLearningRecordEntity record = new CourseLearningRecordEntity();
		//封装 用户信息
		SUserEntity sUser = dbDao.fetch(SUserEntity.class, Cnd.where("id", "=", sqlParamForm.getUserId()));
		if (Util.isEmpty(sUser)) {
			return null;
		}
		record.setUserId(sqlParamForm.getUserId());
		record.setUserName(sUser.getUsername());
		//封装 课程信息
		CourseEntity courseEntity = dbDao.fetch(CourseEntity.class, Cnd.where("id", "=", sqlParamForm.getCourseId()));
		if (Util.isEmpty(courseEntity)) {
			return null;
		}
		record.setCourseId(sqlParamForm.getCourseId());
		record.setCourseName(courseEntity.getCourseName());

		//封装学习 状态 学习 进度
		record.setLearningProgress(0);
		//因为是第一次学习 学进度 给为 学习中 STUDYCENTRE
		record.setLearningState(StudyStateEnum.STUDYCENTRE.intKey());
		record.setSectionId(sqlParamForm.getSectionId());
		InsCourseStructureEntity single = dbDao.fetch(InsCourseStructureEntity.class,
				Cnd.where("id", "=", sqlParamForm.getSectionId()));
		record.setSectionName(single.getName());

		//封装 学习时间 和 课程分类
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = df.parse(df.format(new Date()));
		record.setLearningTime(date);
		record.setResourceType(sqlParamForm.getResourceType());
		record.setResourceId(sqlParamForm.getResourceId());
		record.setResourceName(sqlParamForm.getResourceName());
		record.setUrl(sqlParamForm.getUrl());
		return record;
	}

}
